// 自己封装一个axios

// 引入axios
import axios from "axios";

//全局的let instance = axios.create();
let instance = axios.create();
//引入qs第三方插件 将params对象转换为查询字符串  key=value&key2=value2
import qs from "qs";

import store from "../store";

//拦截发送请求 然后给每个Api添加token
//添加请求拦截器
instance.interceptors.request.use((config) => {
  //从vuex中获取token 如果有  则设置header一起发送请求
  let token = store.state.token;
  if (token) {
    config.headers.authorization = token;
  }
  return config;
});

// 添加响应拦截器
instance.interceptors.response.use((response) => {
  if (response.data.code == 401) {
    // 用户token失效
    window.location = "/user/login";
  } else {
    return response;
  }
});


const myAxios = {
  /**
   * 用于发送get请求
   * @param {String} url   请求路径资源
   * @param {Object} params  请求参数对象{参数名：参数值，参数名：参数值
   */
  get(url, params) {
    return instance({
      method: "GET",
      url: url,
      params,
    });
  },
  /**
   * 用于发送post请求
   * @param {String} url   请求路径资源
   * @param {Object} params  请求参数对象{参数名：参数值，参数名：参数值
   */
  post(url, params) {
    return instance({
      method: "POST",
      url: url,
      data: qs.stringify(params), // 将params对象转换为查询字符串  key=value&key2=value2
    });
  },
};

export default myAxios;
